package practice;

import java.util.*;

public class ListHomework {
    public static void main(String[] args) {
        //第一遍
        //list的几种方法
        List<String> list = new ArrayList();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println("list:"+list);

        System.out.println(list.get(1));

        String str1 = list.set(2,"six");
        System.out.println(str1);
        System.out.println(list);

        list.add(3,"seven");
        System.out.println(list);

        String str2 = list.remove(5);
        System.out.println(str2);
        System.out.println(list);

        List<String> list1 = list.subList(1,3);
        System.out.println(list1);
        list1.add(0,"oneOne");
        System.out.println(list1);
        System.out.println(list);

        //对List集合排序
        List<Integer> list2 = new ArrayList();
        list2.add(15);
        list2.add(24);
        list2.add(27);
        list2.add(18);
        list2.add(21);

        Collections.reverse(list2);
        System.out.println(list2);
        Collections.sort(list2,(a,b) -> {
            return a-b;
        });
        System.out.println(list2);

        List<String> list3 = new ArrayList();
        list3.add("w");
        list3.add("www");
        list3.add("ww");
        list3.add("WwwWw");
        Collections.sort(list3,(o1,o2) -> {
            return o1.length()-o2.length();
        });
        System.out.println(list3);

        List<Point> list4 = new ArrayList();
        list4.add(new Point(3,4));
        list4.add(new Point(5,3));
        list4.add(new Point(2,5));
        list4.add(new Point(6,2));
        list4.add(new Point(4,7));
        Collections.sort(list4,(o1,o2) -> {
            return (o1.getX()+o1.getY())-(o2.getX()+o2.getY());
        });
        System.out.println(list4);

        //去重操作
        List<String> list5 = new ArrayList();
        list5.add("one");
        list5.add("two");
        list5.add("three");
        list5.add("four");
        list5.add("two");
        System.out.println(list5);
        Set<String> set = new HashSet();
        set.addAll(list5);
        System.out.println(set);

        //第二遍
        //list的几种方法
//        List<Integer> list1 = new ArrayList();
//        list1.add(10);
//        list1.add(30);
//        list1.add(20);
//        list1.add(50);
//        list1.add(40);
//
//        System.out.println(list1.get(1));
//
//        list1.set(2,60);
//        System.out.println(list1);
//
//        list1.add(0,100);
//        System.out.println(list1);
//
//        list1.remove(1);
//        System.out.println(list1);
//
//        List<Integer> list2 = list1.subList(1,4);
//        System.out.println(list2);
//        list2.set(1,200);
//        System.out.println(list2);
//        System.out.println(list1);
//
//        //list集合排序
//        List<Integer> list3 = new ArrayList();
//        list3.add(100);
//        list3.add(700);
//        list3.add(400);
//        list3.add(200);
//        list3.add(800);
//
//        Collections.sort(list3,(o1,o2) -> {
//            return o2-o1;
//        });
//        System.out.println(list3);
//
//        List<String> list4 = new ArrayList();
//        list4.add("jav");
//        list4.add("jack");
//        list4.add("ja");
//        list4.add("javaA");
//        list4.add("restTt");
//        Collections.sort(list4,(o1,o2) -> {
//            return o2.length()-o1.length();
//        });
//
//        List<Point> list5 = new ArrayList();
//        list5.add(new Point(5,8));
//        list5.add(new Point(6,9));
//        list5.add(new Point(7,7));
//        list5.add(new Point(10,4));
//        list5.add(new Point(9,3));
//        Collections.sort(list5,(o1,o2) -> {
//            return o2.getX()*o2.getY()- o1.getX()* o1.getY();
//        });
//        System.out.println(list5);
//
//        //去重
//        List<String> list6 = new ArrayList();
//        list6.add("one");
//        list6.add("two");
//        list6.add("three");
//        list6.add("four");
//        list6.add("one");
//        System.out.println(list6);
//        Set<String> set = new HashSet();
//        set.addAll(list6);
//        System.out.println(set);





    }
}

class Point {
    private int x;
    private int y;

    public Point() {
    }

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Point point = (Point) o;
        return x == point.x && y == point.y;
    }

    @Override
    public int hashCode() {
        return Objects.hash(x, y);
    }

    @Override
    public String toString() {
        return "("+x+","+y+")";
    }
}
